// 1.封装变量
var a =function() {
    var b =1;
    for(var i =0,l = arguments.length; i< 1; i++) {
        b = b * arguments[i];
    }
    return b;
}
// 2. 延续局部变量的寿命
// 无闭包时,浏览器某些低版本浏览器report调用结束后img变量被销毁，此时可能还没发起网络请求容易丢包
// 该函数模拟无法复现
var report1 =function(src) {
    setTimeout(() => console.log(img), 5000)
    var img = {};
    img.src =src;
}

// 有闭包时img变量用闭包封闭起来，便能解决请求丢失
var report2 = (function(){
    var imgs = [];
    setTimeout(() => console.log(imgs), 1000)
    return function(src) {
        var img = {};
        img.src =src;
        imgs.push(img);
    }
})();

report1('http://baidu.com');
report2('http://baidu.com');
